การแนะนำโมดูลภาษาพายธอน
ในภาษาพายธอน โมดูลคือโมดูล ไฟล์ที่สิ้นสุดด้วย.py ซึ่งทำหน้าที่เป็นตัวเก็บชุดโค้ดที่สามารถนำกลับมาใช้ใหม่ได้ (ฟังก์ชัน คลาส และตัวแปร) โมดูลเป็นหัวใจสำคัญของสถาปัตยกรรมโปรแกรมขนาดใหญ่ ช่วยให้นักพัฒนาจัดการความซับซ้อนและปรับปรุงการบำรุงรักษ์โค้ดโดยการแยกคำจำกัดความอย่างมีเหตุผล กระบวนการนี้คล้ายกับวิธีที่แนวคิดทางคณิตศาสตร์ถูกแบ่งออกเป็นสาขาเฉพาะ (เช่น $f(x)$ ถูกกำหนดไว้ในโดเมน $D$ ที่เฉพาะเจาะจง)
1. วัตถุประสงค์ของโมดูล
โมดูลตอบสนองต่อความต้องการหลักสามประการในการพัฒนา:
- ส่งเสริมการนำโค้ดไปใช้ซ้ำในโปรเจกต์หลาย ๆ โครงการ โดยไม่ต้องเขียนคำจำกัดความใหม่
- สร้างความชัดเจนและความเป็นระเบียบโดยการแบ่งโปรแกรมขนาดใหญ่ออกเป็นไฟล์ที่จัดการได้และมีความเกี่ยวข้องกัน
- ป้องกันการชนกันของชื่อโดยการกำหนดพื้นที่ชื่อแยกต่างหากสำหรับฟังก์ชันและตัวแปร
ตัวอย่างเชิงแนวคิด:
ลองนึกภาพว่ามีไฟล์ชื่อ
utility.py ที่มีฟังก์ชันสำหรับคำนวณผลลัพธ์ทางคณิตศาสตร์ ไฟล์ทั้งหมดนี้คือโมดูล และฟังก์ชันเหล่านั้นคือเนื้อหาที่เข้าถึงได้
2. วิธีการนำเข้า
คำสั่ง import ทำให้คำจำกัดความภายนอกพร้อมใช้งานในสคริปต์ปัจจุบัน วิธีที่เลือกจะกำหนดวิธีการเข้าถึงองค์ประกอบและผลกระทบต่อพื้นที่ชื่อ (namespace) ของโปรแกรมปัจจุบัน
- การนำเข้าแบบมาตรฐาน:
import module_name. จำเป็นต้องเข้าถึงเนื้อหาโดยใช้module_name.function(). - การนำเข้าแบบเฉพาะเจาะจง:
from module import function. อนุญาตให้ใช้งานได้ทันทีโดยไม่ต้องมีคำนำหน้าโมดูลfunction()โดยไม่มีคำนำหน้าโมดูล - การนำเข้าด้วยชื่อเล่น:
import module as alias. ให้ชื่อเล่นที่สั้นกว่าและเฉพาะโปรเจกต์เพื่อความสะดวก (เช่นimport numpy as np)
โฟกัสที่ไลบรารีมาตรฐาน
ภาษาพายธอนมีไลบรารีมาตรฐานที่ครอบคลุมอย่างมากไลบรารีมาตรฐาน ของโมดูลที่มีอยู่แล้ว (เช่น 'os', 'sys', 'random', 'math') การเรียนรู้การใช้งานโมดูลที่สามารถนำกลับมาใช้ใหม่เหล่านี้เป็นสิ่งจำเป็นสำหรับการพัฒนาอย่างมีประสิทธิภาพ และช่วยประหยัดเวลาอย่างมาก
Question 1
If you use
import math, how must you call the sqrt function to calculate $\sqrt{25}$?Question 2
Which benefit of using modules addresses the issue of having multiple functions named
process_data in a large application?Question 3
What happens to a module file the second time you attempt to
import it in the same running program?